Please enable JavaScript.
Coggle requires JavaScript to display documents.
OO & Spring (OO (semantyka (Klasy (klasy wewnętrzne (statyczne,…
OO & Spring
OO
teoria
Paradygmaty
Dziedziczenie
Polimorfizm
dynamiczny - przesłanianie
statyczny - przeciążanie
Abstrakcja
Enkapsulacja
Dodatkowe koncepty
Asocjacja
Agregacja
Kompozycja
Kohezja
Połączenie obiektów
filozofia programowania obiektowego
dobrze zarządzana firma
delegacja odpowiedzialności
silosy danych
specjaliści
semantyka
pakiety:
nazewnictwo
podział
Klasy
z czego składa się klasa?
pakiet
importy
-- static importy
nazwa klasy
-- adnotacje
-- super klasy
-- interfejsy
pola (fieldy)
-- modyfikatory
-- static
-- final
metody
-- modyfikatory
-- adnotacje
klasy wewnętrzne
dziedziczenie
interfejsy
-wielodziedziczenie
klasy
podstawowe metody:
toString()
equals()
hashCode()
setXXX()
getXXX()
zasięgi widoczności
składowych klasy
klasy wewnętrzne
statyczne
zwyczajne
anonimowe
generyki:
kolekcje generyczne
generyczne metody
generyczne klasy i ich składowe
enum
typy podstawowe:
boolean
- 0/1
byte
- 8 bit
char
- znaki 8 bit
short
- liczby całkowite 16bit
int
- małe liczby całkowite 32bit
long
- duże liczby całkowite
float - liczby zmiennoprzecinkowe , mała precyzja
double
- zmiennoprzecinkowe, duża precyzja
operatory:
!
==
!=
&&
||
+=
wyjątki
Throwable
checkowalne
pozostałe
wymagają specjalnej obsługi
niecheckowalne
RuntimeException
Error
instrukcje/pętle
for(int i=0; i<100; i++)
for(A: <Iterable>)
if(a == b)
switch(xx){case(): break)
try{ throw new Exception()}catch(Exception e){ }
budowanie & kompilacja
moduły
MVN
dobre praktyki
wzorce projektowe (ogólnie)
składanie nad dziedziczeniem
Singleton
TDD
Tell, don't ask
DRY
YAGNI
SOLID
doświadczenie
Uncle Bob's Clean Code
biblioteki
standardowa:
String
System.out.println()
StringBuilder
List
Set
Map
Pattern
Class
& refleksja
File/Path
InputStream/OutputStream
Thread
LocalDate
BigDecimal
kolekcje
Listy
ArrayList
LinkedList
Sety
HashSet
TreeSet
mapy
HashMap
inne:
apache commons
vavr
guava (vintage)
testowe
Mockito
assertJ
junit
debugowanie
narzędzia
MVN
GIT
IDE
Intellij IDEA
REST client
Insomnia
Tomcat 8.5
H2
Spring Boot
Gdzie uruchamiać?
kontener servletów
SpringBoot - wbudowany kontener
konfigurowanie
uruchamianie
testy
stawianie contextu
wstrzykiwanie beanów w testach
transakcyjność
IoC
Spring Context
Spring Bean
Cykl życia
adnotacje pomocnicze:
PostConstruct
PreDestroy
dziedziczenie
Zakresy
Singleton
Prototype
Request
Session
"Custom"
Injection
Sposób mapowania
TYP
Kwalifikatory
Component("my_name")
- na definicji klasy
Qualifier("my_name)
- obok
Autowired
Kolekcje
Order
interfejs
Ordered
zad
zad
zad
problemy
cykle
brak beanów
za dużo beanów
miejsce wstrzykiwania
Pola
private
final
settery
Required
Konstruktor (the best)
pośrednio (Producenci)
profile (?)
sposób tworzenia
ComponentScan
kluczowe adnotacje
Component,
Service
Repository
Controller
Configuration
XML
Co to jest Spring?
co to jest?
dlaczego operator new() jest zły?
zależności muszą być zdefiniowane wcześniej
brak oparcia o abstrakcję (interfejsy)
ręczne sterowanie cyklem życia
ciężkie zarządzanie zasięgami widoczności - singleton, request, prototyp
zagadka
Czym zarządza kontener
wstrzykuje zależności (DI)
wstrzykuje konfigurację
zarządza cyklem życia
bazy danych & transakcyjność
Hibernate (krótko)
Entity
DAO
konfiguracja JTA & JPA
Transactional
rodzaje propagacji
zadania
zad1
zad2
zad3
zad4
zad5
zad6
zad7
efekty
ręczne zarządzanie
dlaczego JAVA?
JVM!
bogate biblioteki
przejrzysty język
szerokie wsparcie